A21 - Block Game
https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_u
提出
code: python
n = int(input())
pa = list(map(int, input().split())) for _ in range(n)
# print(pa)
# 4, 20], 3, 30, 2, 40, [1, 10
解答
code: python
n = int(input())
pa = list(map(int, input().split())) for _ in range(n)
# print(pa)
# 4, 20], 3, 30, 2, 40, [1, 10
# dplr := l から r までブロックが残っていて、この状態までの最大スコア
dp = [None * (n+1) for _ in range(n+1)]
dp1n = 0
# count: r-l
for count in reversed(range(0, n-1)):
for l in range(1, n-count+1):
r = l + count
# score1: l-1 番目のブロックを取り除くときの得点
score1 = 0
if l >= 2:
p1 = pal-20
a1 = pal-21
if l <= p1 and p1 <= r:
score1 = a1
# score2: r+1 番目のブロックを取り除くときの得点
score2 = 0
if r <= n-1:
p2 = par0
a2 = par1
if l <= p2 and p2 <= r:
score2 = a2
if l == 1:
dplr = dplr+1 + score2
elif r == n:
dplr = dpl-1r + score1
else:
dplr = max(dpl-1r + score1, dplr+1 + score2)
ans = 0
for i in range(1, n+1):
ans = max(ans, dpii)
print(ans)